/*
 * ArchController.h
 *
 *  Created on: Jan 13, 2010
 *      Author: artur
 */

#ifndef ARCHCONTROLLER_H_
#define ARCHCONTROLLER_H_

#include <kiddie/kiddie.h>
#include <sys/types.h>

/*
 *
 */
namespace kernel {

namespace irq {

class ArchController {
public:
	ArchController();
	~ArchController();

protected:
	void irq_enable(void);
	void irq_disable(void);
	void operator + (unsigned int);	// add interrupt mask
	void operator - (unsigned int); // remove interrupt mask
	void archinit(void);

	unsigned int irq_translate(struct cpu_regs *);
	void irq_received(unsigned int);

private:
	void *membase;
};

}

}

#endif /* ARCHCONTROLLER_H_ */
